#pragma once

#include "call_agent_interface.hpp"

namespace p2pms
{

//==================================================================================================
//
//==================================================================================================
class BaseCallAgent : public ICallAgent
{
public:
	BaseCallAgent(CallMode mode, CallRole role, const std::string& user_id);
	virtual ~BaseCallAgent() = default;

	// ICallAgent
	CallMode GetCallMode() override;
	CallState GetCallState() override;
	std::string GetCallerId() override;
	std::string GetCalleeId() override;
	std::string GetCallId() override;
	std::string GetPeerUserId() override;
	std::string GetUserId() override;

protected:
	CallMode m_call_mode = CallMode::CALL_MODE_INVALID;
	CallRole m_call_role = CallRole::Undefined;
	CallState m_call_state = CallState::Idle;
	std::string m_call_id;
	std::string m_callee_id;
	std::string m_caller_id;
};

} // namespace p2pms
